<?php 
namespace Admin\Behavior;
use Think\Behavior;

class AuthenticateBehavior extends Behavior
{
	protected $options = array();
	
	public function run(&$params)
    {
        // 判断是否有登陆
        if(!session("role_id")){
            redirect(U('Login/index'));
            return false;
        }
		$c = strtolower(CONTROLLER_NAME);
		$a = strtolower(ACTION_NAME);
		$url = $c .'/'. $a;
        // 超级管理员
        $login_role = session("role_id");
        if($login_role == 1){
            return true;
        }
        // $params 参数请保证是全小写字母组成的以为数据
        // 例如 $params = array('admin/index' ,'system/index');
        if(in_array($a ,$params)){
            return true;
        }
        // 查询自己拥有的所有权限
        $my_permissions = M("permission")->where("role_id = ".session("role_id"))->select();
        // 未分配任何权限
        if($my_permissions){
            foreach($my_permissions as $val){
                $urls[] = $val['url'];
            }
            if(in_array($url ,$urls)){
                return true;
            }
        }
        // 错过了前面所有村
        echo "<script type='text/javascript'>alert('您没有此权限！');window.location.href = '".$_SERVER['HTTP_REFERER']."';</script>";
        return false;
	}
}